/*************************************************************************************
* Ŀ:
* ChipON IDE
* 汾
* Ӳ
* ʹоƬ
* ߣϺо΢޹˾
* ܼ:
*************************************************************************************/

#include "main.h"

unsigned char temp;
unsigned char kf8_touch_flag;
unsigned int  Touch_Watch;	// 
/*********************궨****************************/
unsigned char Key_Code;	// 
//;************************************************************************************
//;*   :  delay_ms
//;* : ʱ
//;* ڲ: 
//;*     :   
//;************************************************************************************
void delay_ms(uint ms_data)
{
	uint j=0;
	while(ms_data--)
	{
		j=200;
		_CWDT();
		while(j--)
		{
			_CWDT();
		}
	}
}
//;************************************************************************************
//;*   :  delay_us
//;* : ʱ
//;* ڲ: 
//;*     :   
//;************************************************************************************
void delay_us(uint us_data)
{
	while(us_data--);
}
//;************************************************************************************
//;*   :  Touch_Key_Deal_Fun
//;* :
//;* ڲ: 
//;*     :   
//;************************************************************************************
void Touch_Key_Deal_Fun()
{
	static long  Key_Code_Vaule_Old=0x1234;
	// Կǽ־ֳ2int4charȻж϶Ӧbitֵlong͵ƵȽ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#define  Key_CT0	0x00000001		//CT0
#define  Key_CT1	0x00000002		//CT1
#define  Key_CT2	0x00000004		//CT2
#define  Key_CT3	0x00000008		//CT3
#define  Key_CT4	0x00000010		//CT4
#define  Key_CT5	0x00000020		//CT5
#define  Key_CT6	0x00000040		//CT6
#define  Key_CT7	0x00000080		//CT7
#define  Key_CT8	0x00000100		//CT8
#define  Key_CT9	0x00000200		//CT9
#define  Key_CT10	0x00000400		//CT10
#define  Key_CT11	0x00000800		//CT11
#define  Key_CT12	0x00001000		//CT12
#define  Key_CT13	0x00002000		//CT13
#define  Key_CT14	0x00004000		//CT14
#define  Key_CT15	0x00008000		//CT15
#define  Key_CT16	0x00010000		//CT16
#define  Key_CT17	0x00020000		//CT17
#define  Key_CT18	0x00040000		//CT18
#define  Key_CT19	0x00080000		//CT19
#define  Key_CT20	0x00100000		//CT20
#define  Key_CT21	0x00200000		//CT21

#define  Key_CT31	0x00000003	// CT1 CT0 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
	if(Key_Code_Vaule_Old!=_KF8_LIBi_channel_flag_)
	{
		Key_Code_Vaule_Old=_KF8_LIBi_channel_flag_;

		if(_KF8_LIBi_channel_flag_==Key_CT0)		//CT0
		{
			Key_Code=1;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT1)		//CT1
		{
			Key_Code=2;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT2)		//CT2
		{
			Key_Code=3;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT3)		//CT3
		{
			Key_Code=4;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT4)		//CT4
		{
			Key_Code=5;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT5)		//CT5
		{
			Key_Code=6;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT6)		//CT6
		{
			Key_Code=7;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT7)		//CT7
		{
			Key_Code=8;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT8)		//CT8
		{
			Key_Code=9;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT9)		//CT9
		{
			Key_Code=10;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT10)		//CT10
		{
			Key_Code=11;
		}
		else if(_KF8_LIBi_channel_flag_==Key_CT11)		//CT11
		{
			Key_Code=12;
		}
		//..............................CT12-CT21   CT3x ϼn
		else
		{
			Key_Code=0;
		}
		/***********************԰ʶ*******/
//		__asm
//			BANKSEL __KF8_LIBi_channel_flag_
//			MOV R0,__KF8_LIBi_channel_flag_+2
//			MOV R1,__KF8_LIBi_channel_flag_+3
//			BANKSEL _sentbuf1
//			MOV _sentbuf1,R1
//			BANKSEL _sentbuf2
//			MOV _sentbuf2,R0
//
//			BANKSEL __KF8_LIBi_channel_flag_
//			MOV R0,__KF8_LIBi_channel_flag_+0
//			MOV R1,__KF8_LIBi_channel_flag_+1
//			BANKSEL _sentbuf3
//			MOV _sentbuf3,R1
//			BANKSEL _sentbuf4
//			MOV _sentbuf4,R0
//		__endasm;
//		TOUCH_DEBUG_SEND_OUT();	// ڹʶ𰴼
		/***********************԰ʶ*******/
	}
}

//;***********************************************************************************
//;*   :  INT_FUN() __interrupt
//;* : жϺ
//;* ڲ: 
//;*     :   
//;************************************************************************************
void int_fun0() __interrupt (0)
{
	//===============================
	/**ڴжʹT4ΪͬԴʱжȼΪߣͬȼĴʱҪ̣T4رղʱݲʧ***/
	if(T3IF)
	{
		T4CTL=0x00;	//ʹT4ͬܣʱͣȴֵ
		T3IF=0;		//Ϊ˲Ӱжϣ԰Ѵͨŵڴһ־λȻ־λɨ輴
		kf8_touch_flag=1;	//־λ
		Touch_Watch=0;
	}
	//===============================
}
void int_fun1() __interrupt (1)
{
	//===============================
	/**δʹT4ͬʱʹõͼȼ***/
#if 0
	if(T3IF)
	{
		T3IF=0;		//Ϊ˲Ӱжϣ԰Ѵͨŵڴһ־λȻ־λɨ輴
		kf8_touch_flag=1;	//־λ
		Touch_Watch=0;
	}
#endif
	//===============================
}
//;************************************************************************************
//;*   :  void main()
//;* : ں
//;* ڲ: 
//;*     :   
//;************************************************************************************
void main()
{
	init_mcu();						//ʼMCUĴ
	kf8_touch_flag=0;
	delay_ms(200);					//ʱһᣬֹϵ󴥷ͨ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	#if 1		// 1 ѡVDD  0 ѡVref
	//VDDΪѹԴ
		CTCTL1 = 0x41;		//ѹԴʱӷƵ  0 4 8 C~ 4/8/16/32  xxyy yyyx   0~ Vref  1~ VDD
		VDAC=0x90;	   		// 0.5VDD      תѹ趨 ʽ0.05VdacN+1)    N=0--15  Vdac=VDD
	#else
	//ڲοѹΪѹԴ
		CTCTL1 	= 0x40;		//ѹԴʱӷƵ  0 4 8 C~ 4/8/16/32  xxyy yyyx   0~ Vref  1~ VDD
		VRECTL	=0xA2;   	// ѡ3V ѹֵ 6/A/E Ӧ 	2V 3V 4V  &    2Ӧ ʹ
		__asm
		;;VDACS=0x40; 		// תѹҲѡVref	0x40 Vref  0x00  Vdd, ĬVdd
			MOVB #0x00
			MOV R0,#0x40
			ORL 0x1A,R0
		__endasm;
		VDAC=0x80;			// 0.45VDAC       תʽ0.05VdacN+1)    N=0--15 Vdac=Vref
	#endif
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//	_KF8TS27_Lib_Set_Waterproof_Parameter(1);	//ģʽkf8ts27_touch_g.h ˵
	_KF8TS27_Init_Touch_Waterproof_();		//õݴ⺯ĳʼ

	while(1)
	{
		_CWDT();
//		temp=_KF8TS27_Get_Ver_Waterproof_();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/***************ѯ־ģʽ************************/
		if(kf8_touch_flag)
		{
			kf8_touch_flag=0;
			TOUCH_DEBUG_TRS_DEAL();	// ʹôʱﲻӦ
			_KF8TS27_Touch_Process_Waterproof_();//ģʽоƬڼһ壬˳жϣӰж
//			_KF8TS27_Touch_TEST_Waterproof_();		//ȡݲдʱʹ
			Touch_Key_Deal_Fun();	// һɲö״̬ı仯ִУɸڴִС
		}
/***************ѯ־Ľ************************/
/*************м,쳣ʱʱ******************/
		Touch_Watch++;
		if(Touch_Watch>50000)
		{
			Touch_Watch=0;
			_KF8TS27_Init_Touch_Waterproof_();
		}
/****************************************************************/
	}
}
